package day0217.extend;

/**
 * final 表示最终的，不可变的
 *   当 final 修饰类的时候，不可以被继承
 *   当 final 修饰方法时，不可以被重写(覆盖)
 *   当 final 修饰变量时，不可以重新赋值
 *
 */
public class FinalDemo {

    final int a = 1;


    public void say(final String str){
        System.out.println("final method");
    }

    /*
        重载： 同类同名不同参
     */
    Sup say() {
        Sub sub = new Sub();
        // instanceof 判断对象是否属于某个类型
        if (sub instanceof Sup) {
            System.out.println("sub 是 Sup 类型的");
        }
        return sub;
    }

    public static void main(String[] args) {
        FinalDemo finalDemo = new FinalDemo();
        finalDemo.say();
    }


}

class Child extends FinalDemo {

    Child() {
    }

    /*
        重写： 同名同参同返回，不同类, 访问权限相同或变大
            同返回指 返回值的类型是一类  instanceof
     */
    public void say(String str) {

    }

    public Sub say() {

        return null;
    }
}

